home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Tech Arsenal 1
/
Tech Arsenal (Arsenal Computer).ISO
/
tek-04
/
zbpc_460.zip
/
GRAPHICS.EXE
/
PYRAMID.BAS
< prev
next >
Wrap
BASIC Source File
|
1991-03-18
|
3KB
|
96 lines
00010 REM***********************************
00020 REM** PYRAMID 3D GRAPHIC PYRAMID **
00030 REM** CREATED 07/05/84 BY A.G. **
00040 REM***********************************
00050 DEFDBL A-Z : DEFINT A,D,I,J,K : CLS : PRINT"Control - C to stop - - CALC.";
00060 DIM SP%(912),E%(6,3),V(4,3),SV%(4,2),S%(4,4),N(4,3)
00070 RH=15 : D=4000 : AD=1 : CX%=400 : CY%=500
00080 S1=SIN(.5) : C1=COS(.5) : S2=SIN(.9) : C2=COS(.9)
00090 CT=COS(.1) : ST=SIN(.1) : SO=SIN(-.1): CO=COS(-.1)
00100 SP=SIN(-.1): CP=COS(-.1)
00110 DATA 0, 0, 1.75
00120 DATA 1, 0, 0
00130 DATA -.2, 1, 0
00140 DATA -.2,-1, 0
00150 FOR I=1 TO 4
00160 READ X,Y,Z : V(I,1)=X : V(I,2)=Y : V(I,3)=Z : GOSUB 890
00170 NEXT
00180 DATA 1,4,2,1
00190 DATA 1,2,3,1
00200 DATA 1,3,4,1
00210 DATA 2,4,3,2
00220 FOR I=1 TO 4
00230 FOR J=1 TO 4
00240 READ S%(I,J)
00250 NEXT J
00260 NEXT I
00270 FOR IR = 1 TO 36
00280 FOR I=1 TO 6
00290 E%(I,3)=0
00300 NEXT I
00310 FOR I=1 TO 4
00320 U1=V(S%(I,2),1)-V(S%(I,1),1)
00330 U2=V(S%(I,2),2)-V(S%(I,1),2)
00340 U3=V(S%(I,2),3)-V(S%(I,1),3)
00350 V1=V(S%(I,3),1)-V(S%(I,1),1)
00360 V2=V(S%(I,3),2)-V(S%(I,1),2)
00370 V3=V(S%(I,3),3)-V(S%(I,1),3)
00380 N(I,1)=U2*V3-V2*U3:N(I,2)=U3*V1-V3*U1:N(I,3)=U1*V2-V1*U2
00390 NEXT I
00400 XE=RH*S2*C1 : YE=RH*S2*S1 : ZE=RH*C2
00410 N%=1
00420 FOR I=1 TO 4
00430 E2%=S%(I,1)
00440 WX=XE-V(E2%,1) : WY=YE-V(E2%,2) : WZ=ZE-V(E2%,3)
00450 LONG IF N(I,1)*WX+N(I,2)*WY+N(I,3)*WZ > 0
00460 E1%=S%(I,1)
00470 FOR J=2 TO 4
00480 E2%=S%(I,J)
00490 FOR K=1 TO N%
00500 IF E%(K,1)=E2% AND E%(K,2)=E1% THEN E%(K,3)=2 : GOTO 540
00510 NEXT K
00520 E%(N%,1)=E1% : E%(N%,2)=E2% : E%(N%,3)=1
00530 N%=N%+1
00540 E1%=E2%
00550 NEXT J
00560 END IF
00570 NEXT I
00580 FOR I=1 TO 6
00590 LONG IF E%(I,3)
00600 J=E%(I,1) : K=E%(I,2)
00610 SP%(AD )=SV%(J,1) : SP%(AD+1)=SV%(J,2)
00620 SP%(AD+2)=SV%(K,1) : SP%(AD+3)=SV%(K,2)
00630 END IF
00640 AD=AD+4
00650 NEXT
00660 FOR I=1 TO 4
00670 T1=CP*CT*V(I,1)-(ST*CP+SO*SP)*V(I,2)+(SO*ST*CP-SP*CO)*V(I,3)
00680 T2=ST*V(I,1)+CO*CT*V(I,2)-SO*CT*V(I,3)
00690 T3=SP*CT*V(I,1)+(SO*CP-CO*ST*SP)*V(I,2)+(ST*SO*SP+CO*CP)*V(I,3)
00700 V(I,1)=T1 : V(I,2)=T2 : V(I,3)=T3 : X=T1 : Y=T2 : Z=T3
00710 GOSUB 890
00720 NEXT
00730 TRON B:TROFF:PRINT"*";
00740 NEXT
00750 FOR I=1 TO 48
00760 SP%(I+864)=SP%(I)
00770 NEXT I
00780 AD=1 : M=M+1 : IF M > 23 THEN M=0
00785 MODE M : PRINT @(0,0) "MODE";M : PRINT TIME$
00790 COLOR ASC("*") : GOSUB 820: COLOR 0 : AD=AD-24 : GOSUB 820
00800 TRON X:IF AD=865 THEN 780
00810 GOTO 790
00820 FOR I=1 TO 6
00830 LONG IF SP%(AD)
00840 PLOT SP%(AD),SP%(AD+1) TO SP%(AD+2),SP%(AD+3)
00850 END IF
00860 AD=AD+4
00870 NEXT
00880 RETURN
00890 XE=-X*S1+Y*C1
00900 YE=-X*C1*C2-Y*S1*C2+Z*S2
00910 ZE=-X*S2*C1-Y*S2*S1-Z*C2+RH
00920 SV%(I,1)= D*XE/ZE+CX%
00930 SV%(I,2)=-D*YE/ZE+CY%
00940 RETURN